import {reqGetCode,reqUserRegister,reqUserLogin,reqGetUserInfo,reqLoginOut} from "@/api"
import { setToken } from "@/utils/token";
export default ({
    state:{
        code:"",
        // 将token的值置为本地存储的token，登录之前为空，登录之后本地仓库一直有，只要调用了改仓库就可以取到token，因此在home页面一直刷新都会展示用户信息，但是“跳转”到其他页面就没有了
        token:localStorage.getItem("TOKEN"),
        userInfo:{}
    },
    mutations:{
        GETCODE(state,code){
            state.code=code;
        },
        USERLOGIN(state,token){
            state.token=token
        },
        GETUSERINFO(state,userInfo){
            state.userInfo=userInfo;
        },
        // 清除本地信息
        CLEAR(state){
            state.token="";
            state.userInfo={};
            //可以现在token.js中写下面方法，再在此处进行调用
            localStorage.removeItem("TOKEN")
            console.log('本地数据已清除')
           
           
        }
    },
    actions:{
        async getCode({commit},phone){
            let result= await reqGetCode(phone);
            if(result.code==200){
                commit("GETCODE",result.data);
                return "OK";
            }else{
                return Promise.reject(new Error('faile'));
            }
        },
        async userRegister({commit},data){
            let result=await reqUserRegister(data);
            console.log("test1",result)
            if(result.code==200){
                console.log("注册成功",result);
                return "OK";
            }else{
                return Promise.reject(new Error("faile"));
            }
        },
        async userLogin({commit},data){
            let result=await reqUserLogin(data);
            if(result.code==200){
                commit("USERLOGIN",result.data.token);
                // 持久化存储token
                localStorage.setItem("TOKEN",result.data.token)
                setToken(result.data.token);
                return "OK";
            }else{
                return Promise.reject(new Error("faile"));
            }
        },
        async getUserInfo({commit}){
            let result = await reqGetUserInfo();
            console.log("用户信息",result);
            if(result.code==200){
                commit("GETUSERINFO",result.data);
                return "OK"
            }else{
                return Promise.reject(new Error("faile"))
            }
        },
        async userLoginOut({commit}){
            let result = await reqLoginOut();
            if(result.code==200){
                console.log("退出成功，后台数据清除");
                // 通知服务器清除相应的信息之后需要清除本地的信息
                commit("CLEAR");
                // 全部成功之后派发事件的地方还需要进行页面跳转
                return "OK";
            }else{
                return Promise.reject(new Error("faile"));
            }
        }
    },
    getters:{
        
    }
})